package com.guoguo.service;


import java.util.Map;

import com.guoguo.base.PageBean;
import com.guoguo.entity.UserExt;
import com.guoguo.entity.UserOther;
import com.guoguo.entity.Users;
import com.guoguo.entity.vo.UserInfoVO;
import com.guoguo.entity.vo.UsersVO;

/**
 * Created by Administrator on 2017/8/7 0007.
 */
public interface IUsersService {

    Users findUser(String userName, String userpwd);

    /**
     * 普通登录
     *
     * @param userName
     * @param userpwd
     * @return
     */
    boolean findUsers(String userName, String userpwd);

    /**
     * 第三方登录
     *
     * @param userName
     * @return
     */
    Users findUsers(String userName, String nickName, String icon, int appId, int phoneType);

    /**
     * 游客登录
     * @param Mac
     * @return
     */
    boolean guestLogin(String Mac);

    /**
     * 查找单个用户帐号
     *
     * @param userId
     * @return
     */
    Users findUserById(String userId);


   /**
     * 查找单个用户详情
     *
     * @param userId
     * @return
     */
    UsersVO findUsersInfo(String userId);

    /**
     * 查找单个用户详情(API使用)
     * @param userId
     * @return
     */
    UserInfoVO findUsersInfoVO(String userId);

    /**
     * 修改用户帐号
     *
     * @param users
     * @param userExt
     */
    void updateUsersInfo(Users users, UserExt userExt);

    /**
     * 用户注册
     * @param username
     * @param userpwd
     * @param icon
     * @param nickname
     * @param appId
     * @return
     */
    boolean userRegister(String username,String userpwd,String icon,String nickname,String appId );

    /**
     * 找回密码
     * @param username
     * @param userpwd
     * @param phone
     * @return
     */
    boolean updateUserpwd(String username,String userpwd,String phone);

    /**
     * 查询所有用户
     * @return
     */
    PageBean<UsersVO> selectUserList(int pageNumber, int pageSize);
    /**
     * 添加一个用户
     */
    int insertUsers(Users users);

    /**
     * 根据users修改一个用户
     */
    int updateUsers(Users users);

    Users selectByPrimaryKey(String userId);

    /**
     * 根据用户名去查询判断用户是否存在
     */
    int count (String username);

	/**
	 * 查询注册的用户是否被邀请过
	 * @param phone 
	 */
	String selectUserIsHaveSrcUser(String phone);

	/**
	 * 邀请有奖基础数据
	 * @param userId
	 * @param imgId
	 * @return
	 * @throws Exception
	 */
	Map<String, String> invitationAwardBasic(String userId, String imgId) throws Exception;

	/**
	 * 邀请有奖二维码
	 * @param userId
	 * @param imgId
	 * @return
	 * @throws Exception
	 */
	Map<String, String> invitationAwardQR(String userId, String imgId) throws Exception;

	/**
	 * 用户设置
	 * @param userId
	 * @return
	 */
	Map<String, String> userSet(String userId);

	/**
	 * 查询手机用户是否存在
	 * @param phoneNo
	 * @return
	 */
	Integer selectCountByPhone(String phoneNo);

	/**
	 * 绑定用户手机号
	 * @param userId
	 * @param phone
	 * @return
	 */
	boolean bingPhone(String userId, String phone);
    
	/**
	 * 设置密码
	 * @param userId
	 * @param phone
	 * @return
	 */
	boolean setPassword(String userId, String password);
    
	/**
	 * 重置密码验证
	 * @param userId
	 * @param phone
	 * @return
	 */
	boolean resetPassword(String userId, String phone);

	/**
	 * @param userOther
	 */
	int insertUserOther(UserOther userOther);
    
	/**
	 * 查询用户邀请和礼包的标记
	 * @param userId
	 * @return
	 */
	UserInfoVO findInvitGiftFlag(String userId);
}
